/**
 * Interfície que mostra els mètodes del servidor
 * Definirem tots els mètodes de negoci del subsistema d'estudiants
 * @author Grup TDP 1X4J
 */
package edu.uoc.tdp.common;

import edu.uoc.tdp.beans.estudiants.Inscripcio;
import edu.uoc.tdp.beans.proves.Prova;
import java.rmi.RemoteException;
import java.sql.Date;
import java.sql.SQLException;
import java.util.List;

public interface RemotEstudiantsInterface extends java.rmi.Remote {
/**
     * Retorna les proves del sistema
     * @param
     * @return Les proves del sistema
     * @throws RemoteException
     * @throws EOlympicException 
     */
    List<Prova> ObtenirProves() throws RemoteException, EOlympicsException;  
    
    
  /**
     * Retorna la data d'inscripció d'un estudiant en una prova
     * @param pidprova Identificador de la Prova
     * @param pidEstudiant Identificador de l'Estudiant
     * @return Data d'inscripció de l'Estudiant en una Prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
    
    Date ObtenirDataInscripcio(Integer pidProva, Integer pidEstudiant) throws RemoteException, EOlympicsException;
    
  /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
    
    List<Inscripcio> ObtenirInscrits(Integer pidProva) throws RemoteException, EOlympicsException; 
    
        
  /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
    
    boolean Inscriure(Integer pidProva, Integer pidEstudiant) throws RemoteException, EOlympicsException; 
      /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
    
    boolean Esborrar(Integer pidProva, Integer pidEstudiant) throws RemoteException, EOlympicsException; 
    

    /**
     * Retorna la llista de proves on s'ha inscrit un estudiant independentment de l'estat
     * @param pidEstudiant Identificador de l'estudiant
     * @return Llista de proves on s'ha inscrit un estudiant independentment de l'estat
     * @throws RemoteException
     * @throws EOlympicException 
     */ 
    List<Prova> ProvesAmbInscripcio(Integer pidEstudiant) throws RemoteException, EOlympicsException;
    
    
    /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */ 
    List<Prova> ProvesInscrites(Integer pidEstudiant) throws RemoteException, EOlympicsException;
    
          /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */ 
    List<Prova> ProvesFinalitzades(Integer pidEstudiant) throws RemoteException, EOlympicsException;    
    
              /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */ 
    boolean EntradaPregunta(Integer pidProva, String TipusRonda, Integer pidEstudiant, int numpregunta, String resposta) throws SQLException,RemoteException, EOlympicsException;
     /**
     * Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
     boolean ComprovaInscripcio(Integer pidProva,  Integer pidEstudiant) throws RemoteException, EOlympicsException;
     
     /* Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
     String RespostaPregunta(Integer pidProva, String TipusRonda, Integer pidEstudiant, int numpregunta) throws SQLException,RemoteException, EOlympicsException, EOlympicsExceptionProva;  
     
     /* Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
     String RespostaCorrecta(Integer pidProva, String TipusRonda, int numpregunta) throws SQLException,RemoteException, EOlympicsException;  
     
     /* Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
     boolean ComprovaParticipacio(Integer pidProva, String TipusRonda, Integer pidEstudiant) throws RemoteException, EOlympicsException;
     
     /* Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */  
     boolean ComprovaRealitzacio(Integer pidProva, String TipusRonda, Integer pidEstudiant) throws RemoteException, EOlympicsException;
     
     /* Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */
     List<Prova> ProvesInscritesTotals(Integer pidEstudiant) throws RemoteException, EOlympicsException;
     
     /* Retorna els inscrits en una prova
     * @param
     * @return inscrits en una prova
     * @throws RemoteException
     * @throws EOlympicException 
     */
     boolean MarcaParticipacio(Integer pidProva, String TipusRonda, Integer pidEstudiant) throws SQLException, RemoteException, EOlympicsException;
}